package com.homework;

/**
 * @Author 小闽
 * @Date 2024/10/13 20:45
 * @PackageName: com.homework
 * @ClassName: HomeWork01
 * @Description: 作业1
 * @Version 1.0
 */
public class HomeWork01 {
    public static void main(String[] args) {
        /**
         * （1）将字符串中指定部分进行反转，比如将"abcdef"反转为"aedcbf"
         * （2）编写方法public static String reverse(String str, int start, int end)搞定
         */
        // 思路分析：
        // 1. 先定义public static String reverse(String str, int start, int end)方法
        // 2. 定义一个字符串数组str用于存放abcdef，因为字符串是不可修改，所以将字符串str转换成字符数组
        // 3. 调用reverse()方法
        // 3. 在reverse()方法中对字符串数组str中的每一个元素进行for循环
        // 4. 在reverse()方法中对遍历的数组中的元素按照指定的索引进行反转
        // 5. 根据步骤4如果当前索引不是第一个元素或者最后一个元素那么就进行反转
        // 6. 最后输出反转后的字符串
        String str = "abcdef";
        System.out.println("===交换前的元素===");
        System.out.println(str);
        try {
            str = reverse(str, 1, 2);
        } catch (Exception e) {
            System.out.println(e.getMessage());
            return;
        }
        System.out.println("===交换后的元素===");
        System.out.println(str);
    }
    public static String reverse(String str, int start, int end){
        // 对输入的参数进行验证，
        // 1. 先写出正确的情况
        // 2. 然后取反即可
        if (!(str != null && start > 0 && end > start && end < str.length())){
            throw new RuntimeException("参数不正确");
        }
        char[] chars = str.toCharArray();
        char temp = ' ';
        for (int i = start, j = end; i < j; i++,j--){
            temp = chars[i];
            chars[i] = chars[j];
            chars[j] = temp;
        }
        return new String(chars);
    }
}
